A microprocessor, herein also called programmable computing unit, is typically designed to process a sequence of instructions to perform a certain task. The sequence of instructions may also be referred to as program code. The program code is typically stored in a memory and provided to the computing unit at runtime. With a view to information security, it may be desired to protect the instructions from being tampered with such as being analysed, modified or skipped while they are stored in the memory or transmitted from the memory to the computing unit.
Operation of the microprocessor can be subject to attack and error. Both may occur during an execution of program code. In such a case instructions reaching the computing unit may differ from ‘desired’ instructions, i.e., instructions that would reach the computing unit, if attack or error had not taken place. Differences between the instruction actually processed by the computing unit and the desired instructions may have a random cause (error) or could be deliberately provoked by an intruder (attack). One attack can alter a sequence of process code execution so as to differ from a correct sequence of process code execution that would have been performed had the attack not taken place. Undesired instructions or altered sequences of process code execution, for example due to attack, should be detected.